/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package sommm;

import java.util.LinkedList;

/**
 *
 * @author theodorcostache
 */
public class Element {
    protected String nume;
    protected DimList dimensiuni;

    public Element() {
        dimensiuni = new DimList();
    }


    public void proc(String in,int context){
        String words[] = in.split(" ");
        String s;
        int len = words.length;
        for(int i = 0;i<len;i++ )
        {
            s="";
            for(int j=i-context+1;j<=i;j++)
            {
                if(j>=0)
                    s+=words[j];
            }
            dimensiuni.increment(s);
        }
    }
    public void proc(String in) {
        proc(in, 1);
    }
    public Element(String p_nume) {
        nume=p_nume;
        dimensiuni = new DimList();
    }
    public double distanta(Element el) {
        double suma=0;

        LinkedList<Dimensiune> lista1 = dimensiuni.getDims();

        LinkedList<Dimensiune> lista2 = el.getDimensiuni().getDims();

        boolean gasitInListaDoi = false;
        //pt fiecare el din lista 1

        for(Dimensiune d1:lista1)
        {
            gasitInListaDoi=false;
            //pt fiecare el din lista2
            for(Dimensiune d2:lista2)
            {
                if(d1.egal(d2))
                {
                    suma+=(d1.getAparitii()-d2.getAparitii())*(d1.getAparitii()-d2.getAparitii());
                    gasitInListaDoi=true;
                    lista2.remove(d2);
                    break;
                }
            }
            if(gasitInListaDoi==false){
                suma+=d1.getAparitii()*d1.getAparitii();}
        }

        //pt ce o mai ramas in lista2

          for(Dimensiune d2:lista2)
          {
                    suma+=d2.getAparitii()*d2.getAparitii();
          }

        return Math.sqrt(suma);

    }
    public DimList getDimensiuni() {
        return dimensiuni;
    }
    public String getNume() {
        return nume;
    }

    
}
